package com.ktjy.ktmall.dao;

import com.ktjy.ktmall.entity.CartItem;

import java.util.List;

/**
 * 购物车模块DAO接口
 * @version v1.0
 * @Author 郴州科泰
 * @Create 2024-08-01 - 22:59
 */
public interface CartItemDao {

    /**
     * 加入购物车
     * @param cartItem 购物车对象
     */
    int insert(CartItem cartItem);

    /**
     * 根据微信用户id和skuId查询购物车详情(用于判断当前用户是否重复购买此商品)
     * 如果是重复购买，就对购买数量进行累加。
     * @param userId 微信用户id
     * @param skuId 商品sku的id
     */
    CartItem findByUserIdAndSkuId(int userId, int skuId);

    /**
     * 根据微信用户id和skuId对重复加入购物车的商品进行购买数量累加
     * @param userId 用户id
     * @param skuId 商品sku的id
     * @param goodsCount 本次加入购物车的购买数量
     */
    int updateBuyNum(int userId, int skuId, int goodsCount);

    /**
     * 通过购物车id查询购物车详情
     * @param id 购物车id
     */
    CartItem findById(int id);

    /**
     * 根据购物车id更新购物车中的购物数量
     * @param id 购物车id
     * @param goodsCount 购买数量
     */
    int update(int id, int goodsCount);

    /**
     * 批量删除购物车信息
     * @param ids 购物车id，多个id值是使用逗号隔开
     */
    int batchDel(String ids);

    /**
     * 查询当前登录用户购物车中的商品列表
     * @param userId 当前登录的微信用户id
     */
    List<CartItem> findByUserId(int userId);

    /**
     * 购物车中的单选操作
     * @param id 购物车id
     * @param selected 单选状态：0表示false未勾选，1表示true已勾选
     * @return
     */
    int updateSelected(int id, int selected);

    /**
     * 修改当前登录用户的购物车列表选中状态为全选或全不选
     * @param userId 登录用户的id
     * @param allSelected 选中状态：0表示false未勾选，1表示true已勾选
     */
    int updateAllSelect(int userId, int allSelected);

    /**
     * 查询当前登录用户购物车中被选中的商品列表
     * @param userId 当前登录的微信用户id
     */
    List<CartItem> findSelectedByUserId(int userId);
}
